// $ANTLR 3.4 C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g 2012-11-07 16:31:20
package PL.practica8;

import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings({"all", "warnings", "unchecked"})
public class cFormatParser extends Parser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "ABRIRCORCHETE", "ABRIRLLAVE", "ABRIRPARENTESIS", "ASIGNACION", "ASTERISCO", "BLANCO", "BOOLEAN", "BREAK", "CADENA", "CARACTER", "CERRARCORCHETE", "CERRARLLAVE", "CERRARPARENTESIS", "CHAR", "COMA", "COMENTARIO", "COMENTARIOlINEA", "COMILLAS", "DIGITO", "DOSPUNTOS", "FALSE", "FLOAT", "FOR", "ID", "IF", "INT", "INTERROGACION", "LETRA", "MAS", "MENOS", "NUEVA_LINEA", "NUMERO", "OP_AND", "OP_COMP", "OP_NOT", "OP_OR", "PRINTF", "RETURN", "SEPARADOR", "SLASH", "TRUE", "VOID", "WHILE"
    };

    public static final int EOF=-1;
    public static final int ABRIRCORCHETE=4;
    public static final int ABRIRLLAVE=5;
    public static final int ABRIRPARENTESIS=6;
    public static final int ASIGNACION=7;
    public static final int ASTERISCO=8;
    public static final int BLANCO=9;
    public static final int BOOLEAN=10;
    public static final int BREAK=11;
    public static final int CADENA=12;
    public static final int CARACTER=13;
    public static final int CERRARCORCHETE=14;
    public static final int CERRARLLAVE=15;
    public static final int CERRARPARENTESIS=16;
    public static final int CHAR=17;
    public static final int COMA=18;
    public static final int COMENTARIO=19;
    public static final int COMENTARIOlINEA=20;
    public static final int COMILLAS=21;
    public static final int DIGITO=22;
    public static final int DOSPUNTOS=23;
    public static final int FALSE=24;
    public static final int FLOAT=25;
    public static final int FOR=26;
    public static final int ID=27;
    public static final int IF=28;
    public static final int INT=29;
    public static final int INTERROGACION=30;
    public static final int LETRA=31;
    public static final int MAS=32;
    public static final int MENOS=33;
    public static final int NUEVA_LINEA=34;
    public static final int NUMERO=35;
    public static final int OP_AND=36;
    public static final int OP_COMP=37;
    public static final int OP_NOT=38;
    public static final int OP_OR=39;
    public static final int PRINTF=40;
    public static final int RETURN=41;
    public static final int SEPARADOR=42;
    public static final int SLASH=43;
    public static final int TRUE=44;
    public static final int VOID=45;
    public static final int WHILE=46;

    // delegates
    public Parser[] getDelegates() {
        return new Parser[] {};
    }

    // delegators


    public cFormatParser(TokenStream input) {
        this(input, new RecognizerSharedState());
    }
    public cFormatParser(TokenStream input, RecognizerSharedState state) {
        super(input, state);
    }

    public String[] getTokenNames() { return cFormatParser.tokenNames; }
    public String getGrammarFileName() { return "C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g"; }


      private String resultado = "", parcial = "";

      public String getResult() {
        return resultado;
      }
      ArrayList <RecognitionException> errores = new ArrayList<RecognitionException>();

    public boolean listaVacia (){
        if (errores.isEmpty()){
          return true;
        }else
          return false;
    }

    public ArrayList getListaErrores(){return errores;}


    @Override
    public void reportError (RecognitionException e){
      System.err.println (getErrorMessage(e, getTokenNames()));
      errores.add(e);
    }
     
      



    // $ANTLR start "tipo"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:39:1: tipo returns [String s = \"\"] : (v= VOID |c= CHAR |f= FLOAT |i= INT );
    public final String tipo() throws RecognitionException {
        String s =  "";


        Token v=null;
        Token c=null;
        Token f=null;
        Token i=null;

        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:39:30: (v= VOID |c= CHAR |f= FLOAT |i= INT )
            int alt1=4;
            switch ( input.LA(1) ) {
            case VOID:
                {
                alt1=1;
                }
                break;
            case CHAR:
                {
                alt1=2;
                }
                break;
            case FLOAT:
                {
                alt1=3;
                }
                break;
            case INT:
                {
                alt1=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 1, 0, input);

                throw nvae;

            }

            switch (alt1) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:39:32: v= VOID
                    {
                    v=(Token)match(input,VOID,FOLLOW_VOID_in_tipo57); 

                    s += v.getText();

                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:40:32: c= CHAR
                    {
                    c=(Token)match(input,CHAR,FOLLOW_CHAR_in_tipo96); 

                    s += c.getText();

                    }
                    break;
                case 3 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:41:32: f= FLOAT
                    {
                    f=(Token)match(input,FLOAT,FOLLOW_FLOAT_in_tipo136); 

                    s += f.getText() ;

                    }
                    break;
                case 4 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:42:32: i= INT
                    {
                    i=(Token)match(input,INT,FOLLOW_INT_in_tipo175); 

                    s += i.getText() ;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return s;
    }
    // $ANTLR end "tipo"



    // $ANTLR start "parametro"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:43:1: parametro returns [String s = \"\"] : (str= CADENA |c= CARACTER |n= NUMERO );
    public final String parametro() throws RecognitionException {
        String s =  "";


        Token str=null;
        Token c=null;
        Token n=null;

        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:43:35: (str= CADENA |c= CARACTER |n= NUMERO )
            int alt2=3;
            switch ( input.LA(1) ) {
            case CADENA:
                {
                alt2=1;
                }
                break;
            case CARACTER:
                {
                alt2=2;
                }
                break;
            case NUMERO:
                {
                alt2=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 2, 0, input);

                throw nvae;

            }

            switch (alt2) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:43:37: str= CADENA
                    {
                    str=(Token)match(input,CADENA,FOLLOW_CADENA_in_parametro193); 

                    s += str.getText();

                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:44:13: c= CARACTER
                    {
                    c=(Token)match(input,CARACTER,FOLLOW_CARACTER_in_parametro213); 

                    s += c.getText();

                    }
                    break;
                case 3 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:45:13: n= NUMERO
                    {
                    n=(Token)match(input,NUMERO,FOLLOW_NUMERO_in_parametro233); 

                     s += Integer.parseInt(n.getText());

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return s;
    }
    // $ANTLR end "parametro"



    // $ANTLR start "def_parametros"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:47:1: def_parametros returns [String s =\"\"] : t1= tipo p1= parametro ( COMA t2= tipo p2= parametro )* ;
    public final String def_parametros() throws RecognitionException {
        String s = "";


        String t1 =null;

        String p1 =null;

        String t2 =null;

        String p2 =null;


        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:47:38: (t1= tipo p1= parametro ( COMA t2= tipo p2= parametro )* )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:47:40: t1= tipo p1= parametro ( COMA t2= tipo p2= parametro )*
            {
            pushFollow(FOLLOW_tipo_in_def_parametros260);
            t1=tipo();

            state._fsp--;


            s+=t1+" ";

            pushFollow(FOLLOW_parametro_in_def_parametros269);
            p1=parametro();

            state._fsp--;


            s+=p1;

            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:47:87: ( COMA t2= tipo p2= parametro )*
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( (LA3_0==COMA) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:47:88: COMA t2= tipo p2= parametro
            	    {
            	    match(input,COMA,FOLLOW_COMA_in_def_parametros274); 

            	    s+=", ";

            	    pushFollow(FOLLOW_tipo_in_def_parametros281);
            	    t2=tipo();

            	    state._fsp--;


            	    s+=t2 +" ";

            	    pushFollow(FOLLOW_parametro_in_def_parametros288);
            	    p2=parametro();

            	    state._fsp--;


            	    s+= p2;

            	    }
            	    break;

            	default :
            	    break loop3;
                }
            } while (true);


            s+= ' ';

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return s;
    }
    // $ANTLR end "def_parametros"



    // $ANTLR start "cabecerafuncion"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:48:3: cabecerafuncion returns [String s = \"\"] : t= tipo id= ID ABRIRPARENTESIS ( (dp= def_parametros )? |v= VOID ) CERRARPARENTESIS ;
    public final String cabecerafuncion() throws RecognitionException {
        String s =  "";


        Token id=null;
        Token v=null;
        String t =null;

        String dp =null;


        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:48:42: (t= tipo id= ID ABRIRPARENTESIS ( (dp= def_parametros )? |v= VOID ) CERRARPARENTESIS )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:48:44: t= tipo id= ID ABRIRPARENTESIS ( (dp= def_parametros )? |v= VOID ) CERRARPARENTESIS
            {
            pushFollow(FOLLOW_tipo_in_cabecerafuncion320);
            t=tipo();

            state._fsp--;


            s+=t+" ";

            id=(Token)match(input,ID,FOLLOW_ID_in_cabecerafuncion326); 

            s+=id.getText() + ' ';

            match(input,ABRIRPARENTESIS,FOLLOW_ABRIRPARENTESIS_in_cabecerafuncion330); 

            s+='(';

            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:48:121: ( (dp= def_parametros )? |v= VOID )
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==VOID) ) {
                int LA5_1 = input.LA(2);

                if ( ((LA5_1 >= CADENA && LA5_1 <= CARACTER)||LA5_1==NUMERO) ) {
                    alt5=1;
                }
                else if ( (LA5_1==CERRARPARENTESIS) ) {
                    alt5=2;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 5, 1, input);

                    throw nvae;

                }
            }
            else if ( ((LA5_0 >= CERRARPARENTESIS && LA5_0 <= CHAR)||LA5_0==FLOAT||LA5_0==INT) ) {
                alt5=1;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 5, 0, input);

                throw nvae;

            }
            switch (alt5) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:48:122: (dp= def_parametros )?
                    {
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:48:125: (dp= def_parametros )?
                    int alt4=2;
                    int LA4_0 = input.LA(1);

                    if ( (LA4_0==CHAR||LA4_0==FLOAT||LA4_0==INT||LA4_0==VOID) ) {
                        alt4=1;
                    }
                    switch (alt4) {
                        case 1 :
                            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:48:125: dp= def_parametros
                            {
                            pushFollow(FOLLOW_def_parametros_in_cabecerafuncion339);
                            dp=def_parametros();

                            state._fsp--;


                            }
                            break;

                    }


                    s+= dp;

                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:48:155: v= VOID
                    {
                    v=(Token)match(input,VOID,FOLLOW_VOID_in_cabecerafuncion349); 

                    s+="void";

                    }
                    break;

            }


            match(input,CERRARPARENTESIS,FOLLOW_CERRARPARENTESIS_in_cabecerafuncion354); 

            s+= ")";

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return s;
    }
    // $ANTLR end "cabecerafuncion"



    // $ANTLR start "op_log"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:54:1: op_log returns [String s = \"\"] : ( OP_OR | OP_AND );
    public final String op_log() throws RecognitionException {
        String s =  "";


        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:54:32: ( OP_OR | OP_AND )
            int alt6=2;
            int LA6_0 = input.LA(1);

            if ( (LA6_0==OP_OR) ) {
                alt6=1;
            }
            else if ( (LA6_0==OP_AND) ) {
                alt6=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 6, 0, input);

                throw nvae;

            }
            switch (alt6) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:54:34: OP_OR
                    {
                    match(input,OP_OR,FOLLOW_OP_OR_in_op_log380); 

                    s+= "||";

                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:55:10: OP_AND
                    {
                    match(input,OP_AND,FOLLOW_OP_AND_in_op_log393); 

                    s+= "&&";

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return s;
    }
    // $ANTLR end "op_log"



    // $ANTLR start "entrada"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:58:1: entrada : (parcial= sentencia |parcial= metodo )* ;
    public final void entrada() throws RecognitionException {
        String parcial =null;


        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:58:9: ( (parcial= sentencia |parcial= metodo )* )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:58:11: (parcial= sentencia |parcial= metodo )*
            {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:58:11: (parcial= sentencia |parcial= metodo )*
            loop7:
            do {
                int alt7=3;
                switch ( input.LA(1) ) {
                case ID:
                case IF:
                case PRINTF:
                    {
                    alt7=1;
                    }
                    break;
                case VOID:
                    {
                    int LA7_3 = input.LA(2);

                    if ( (LA7_3==ID) ) {
                        int LA7_7 = input.LA(3);

                        if ( (LA7_7==COMA||LA7_7==SEPARADOR) ) {
                            alt7=1;
                        }
                        else if ( (LA7_7==ABRIRPARENTESIS) ) {
                            alt7=2;
                        }


                    }


                    }
                    break;
                case CHAR:
                    {
                    int LA7_4 = input.LA(2);

                    if ( (LA7_4==ID) ) {
                        int LA7_7 = input.LA(3);

                        if ( (LA7_7==COMA||LA7_7==SEPARADOR) ) {
                            alt7=1;
                        }
                        else if ( (LA7_7==ABRIRPARENTESIS) ) {
                            alt7=2;
                        }


                    }


                    }
                    break;
                case FLOAT:
                    {
                    int LA7_5 = input.LA(2);

                    if ( (LA7_5==ID) ) {
                        int LA7_7 = input.LA(3);

                        if ( (LA7_7==COMA||LA7_7==SEPARADOR) ) {
                            alt7=1;
                        }
                        else if ( (LA7_7==ABRIRPARENTESIS) ) {
                            alt7=2;
                        }


                    }


                    }
                    break;
                case INT:
                    {
                    int LA7_6 = input.LA(2);

                    if ( (LA7_6==ID) ) {
                        int LA7_7 = input.LA(3);

                        if ( (LA7_7==COMA||LA7_7==SEPARADOR) ) {
                            alt7=1;
                        }
                        else if ( (LA7_7==ABRIRPARENTESIS) ) {
                            alt7=2;
                        }


                    }


                    }
                    break;

                }

                switch (alt7) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:58:12: parcial= sentencia
            	    {
            	    pushFollow(FOLLOW_sentencia_in_entrada409);
            	    parcial=sentencia();

            	    state._fsp--;


            	    resultado += parcial;

            	    }
            	    break;
            	case 2 :
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:58:58: parcial= metodo
            	    {
            	    pushFollow(FOLLOW_metodo_in_entrada419);
            	    parcial=metodo();

            	    state._fsp--;


            	    resultado += parcial;

            	    }
            	    break;

            	default :
            	    break loop7;
                }
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "entrada"



    // $ANTLR start "asignacion"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:60:2: asignacion returns [String s = \"\"] : id= ID ASIGNACION e= expr ;
    public final String asignacion() throws RecognitionException {
        String s =  "";


        Token id=null;
        String e =null;


        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:60:37: (id= ID ASIGNACION e= expr )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:60:40: id= ID ASIGNACION e= expr
            {
            id=(Token)match(input,ID,FOLLOW_ID_in_asignacion445); 

            s += id.getText();

            match(input,ASIGNACION,FOLLOW_ASIGNACION_in_asignacion449); 

            s+= " = ";

            pushFollow(FOLLOW_expr_in_asignacion455);
            e=expr();

            state._fsp--;


            s += e;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return s;
    }
    // $ANTLR end "asignacion"



    // $ANTLR start "declaracion"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:62:2: declaracion returns [String s = \"\"] : t= tipo id= ID ( COMA id= ID )* ;
    public final String declaracion() throws RecognitionException {
        String s =  "";


        Token id=null;
        String t =null;


        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:62:37: (t= tipo id= ID ( COMA id= ID )* )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:62:39: t= tipo id= ID ( COMA id= ID )*
            {
            pushFollow(FOLLOW_tipo_in_declaracion506);
            t=tipo();

            state._fsp--;


            s += t + " ";

            id=(Token)match(input,ID,FOLLOW_ID_in_declaracion513); 

            s += id.getText();

            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:62:92: ( COMA id= ID )*
            loop8:
            do {
                int alt8=2;
                int LA8_0 = input.LA(1);

                if ( (LA8_0==COMA) ) {
                    alt8=1;
                }


                switch (alt8) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:62:93: COMA id= ID
            	    {
            	    match(input,COMA,FOLLOW_COMA_in_declaracion519); 

            	    s+= ", ";

            	    id=(Token)match(input,ID,FOLLOW_ID_in_declaracion526); 

            	    s += id.getText() ;

            	    }
            	    break;

            	default :
            	    break loop8;
                }
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return s;
    }
    // $ANTLR end "declaracion"



    // $ANTLR start "printf"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:64:1: printf returns [String s = \"\"] : PRINTF ABRIRPARENTESIS str= CADENA ( COMA id= ID )* CERRARPARENTESIS ;
    public final String printf() throws RecognitionException {
        String s =  "";


        Token str=null;
        Token id=null;

        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:64:32: ( PRINTF ABRIRPARENTESIS str= CADENA ( COMA id= ID )* CERRARPARENTESIS )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:64:35: PRINTF ABRIRPARENTESIS str= CADENA ( COMA id= ID )* CERRARPARENTESIS
            {
            match(input,PRINTF,FOLLOW_PRINTF_in_printf544); 

            s+= "printf"+ ' ';

            match(input,ABRIRPARENTESIS,FOLLOW_ABRIRPARENTESIS_in_printf547); 

            s+='(';

            str=(Token)match(input,CADENA,FOLLOW_CADENA_in_printf555); 

            s+=str.getText();

            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:64:121: ( COMA id= ID )*
            loop9:
            do {
                int alt9=2;
                int LA9_0 = input.LA(1);

                if ( (LA9_0==COMA) ) {
                    alt9=1;
                }


                switch (alt9) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:64:122: COMA id= ID
            	    {
            	    match(input,COMA,FOLLOW_COMA_in_printf560); 

            	    s+=", ";

            	    id=(Token)match(input,ID,FOLLOW_ID_in_printf566); 

            	    s+=id.getText();

            	    }
            	    break;

            	default :
            	    break loop9;
                }
            } while (true);


            match(input,CERRARPARENTESIS,FOLLOW_CERRARPARENTESIS_in_printf572); 

            s+=')';

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return s;
    }
    // $ANTLR end "printf"



    // $ANTLR start "metodo"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:66:1: metodo returns [String s = \"\"] : cf= cabecerafuncion b= bloqueLlaves ;
    public final String metodo() throws RecognitionException {
        String s =  "";


        String cf =null;

        String b =null;


        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:66:32: (cf= cabecerafuncion b= bloqueLlaves )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:66:34: cf= cabecerafuncion b= bloqueLlaves
            {
            pushFollow(FOLLOW_cabecerafuncion_in_metodo590);
            cf=cabecerafuncion();

            state._fsp--;


            s+=cf;

            pushFollow(FOLLOW_bloqueLlaves_in_metodo597);
            b=bloqueLlaves();

            state._fsp--;


            s+=b;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return s;
    }
    // $ANTLR end "metodo"



    // $ANTLR start "sentencia"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:68:1: sentencia returns [String s = \"\"] : ( ( (a= asignacion |p= printf |d= declaracion ) SEPARADOR ) |ci= condicionif );
    public final String sentencia() throws RecognitionException {
        String s =  "";


        String a =null;

        String p =null;

        String d =null;

        String ci =null;


        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:68:35: ( ( (a= asignacion |p= printf |d= declaracion ) SEPARADOR ) |ci= condicionif )
            int alt11=2;
            int LA11_0 = input.LA(1);

            if ( (LA11_0==CHAR||LA11_0==FLOAT||LA11_0==ID||LA11_0==INT||LA11_0==PRINTF||LA11_0==VOID) ) {
                alt11=1;
            }
            else if ( (LA11_0==IF) ) {
                alt11=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 11, 0, input);

                throw nvae;

            }
            switch (alt11) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:69:13: ( (a= asignacion |p= printf |d= declaracion ) SEPARADOR )
                    {
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:69:13: ( (a= asignacion |p= printf |d= declaracion ) SEPARADOR )
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:69:14: (a= asignacion |p= printf |d= declaracion ) SEPARADOR
                    {
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:69:14: (a= asignacion |p= printf |d= declaracion )
                    int alt10=3;
                    switch ( input.LA(1) ) {
                    case ID:
                        {
                        alt10=1;
                        }
                        break;
                    case PRINTF:
                        {
                        alt10=2;
                        }
                        break;
                    case CHAR:
                    case FLOAT:
                    case INT:
                    case VOID:
                        {
                        alt10=3;
                        }
                        break;
                    default:
                        NoViableAltException nvae =
                            new NoViableAltException("", 10, 0, input);

                        throw nvae;

                    }

                    switch (alt10) {
                        case 1 :
                            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:69:15: a= asignacion
                            {
                            pushFollow(FOLLOW_asignacion_in_sentencia629);
                            a=asignacion();

                            state._fsp--;


                            s += a;

                            }
                            break;
                        case 2 :
                            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:69:41: p= printf
                            {
                            pushFollow(FOLLOW_printf_in_sentencia639);
                            p=printf();

                            state._fsp--;


                            s+=p;

                            }
                            break;
                        case 3 :
                            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:69:61: d= declaracion
                            {
                            pushFollow(FOLLOW_declaracion_in_sentencia646);
                            d=declaracion();

                            state._fsp--;


                            s+=d;

                            }
                            break;

                    }


                    match(input,SEPARADOR,FOLLOW_SEPARADOR_in_sentencia651); 

                    s+= ";\r\n";

                    }


                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:70:14: ci= condicionif
                    {
                    pushFollow(FOLLOW_condicionif_in_sentencia675);
                    ci=condicionif();

                    state._fsp--;


                    s += ci;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return s;
    }
    // $ANTLR end "sentencia"



    // $ANTLR start "bloqueLlaves"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:72:1: bloqueLlaves returns [String s = \"\"] : ABRIRLLAVE (sent= sentencia )* CERRARLLAVE ;
    public final String bloqueLlaves() throws RecognitionException {
        String s =  "";


        String sent =null;


        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:72:38: ( ABRIRLLAVE (sent= sentencia )* CERRARLLAVE )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:72:40: ABRIRLLAVE (sent= sentencia )* CERRARLLAVE
            {
            match(input,ABRIRLLAVE,FOLLOW_ABRIRLLAVE_in_bloqueLlaves689); 

            s+= "{\r\n" ;

            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:73:40: (sent= sentencia )*
            loop12:
            do {
                int alt12=2;
                int LA12_0 = input.LA(1);

                if ( (LA12_0==CHAR||LA12_0==FLOAT||(LA12_0 >= ID && LA12_0 <= INT)||LA12_0==PRINTF||LA12_0==VOID) ) {
                    alt12=1;
                }


                switch (alt12) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:73:41: sent= sentencia
            	    {
            	    pushFollow(FOLLOW_sentencia_in_bloqueLlaves738);
            	    sent=sentencia();

            	    state._fsp--;


            	    s += sent;

            	    }
            	    break;

            	default :
            	    break loop12;
                }
            } while (true);


            match(input,CERRARLLAVE,FOLLOW_CERRARLLAVE_in_bloqueLlaves783); 

            s+= "}\r\n" ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return s;
    }
    // $ANTLR end "bloqueLlaves"



    // $ANTLR start "condicionif"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:78:1: condicionif returns [String s = \"\"] : IF ABRIRPARENTESIS cd= cond CERRARPARENTESIS (sent= sentencia |b= bloqueLlaves ) ;
    public final String condicionif() throws RecognitionException {
        String s =  "";


        String cd =null;

        String sent =null;

        String b =null;


        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:78:37: ( IF ABRIRPARENTESIS cd= cond CERRARPARENTESIS (sent= sentencia |b= bloqueLlaves ) )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:78:39: IF ABRIRPARENTESIS cd= cond CERRARPARENTESIS (sent= sentencia |b= bloqueLlaves )
            {
            match(input,IF,FOLLOW_IF_in_condicionif799); 

            s+= "if"+ " ";

            match(input,ABRIRPARENTESIS,FOLLOW_ABRIRPARENTESIS_in_condicionif804); 

            s+= "(" ;

            pushFollow(FOLLOW_cond_in_condicionif813);
            cd=cond();

            state._fsp--;


            s += cd;

            match(input,CERRARPARENTESIS,FOLLOW_CERRARPARENTESIS_in_condicionif817); 

            s+= ")" ;

            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:79:2: (sent= sentencia |b= bloqueLlaves )
            int alt13=2;
            int LA13_0 = input.LA(1);

            if ( (LA13_0==CHAR||LA13_0==FLOAT||(LA13_0 >= ID && LA13_0 <= INT)||LA13_0==PRINTF||LA13_0==VOID) ) {
                alt13=1;
            }
            else if ( (LA13_0==ABRIRLLAVE) ) {
                alt13=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 13, 0, input);

                throw nvae;

            }
            switch (alt13) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:79:3: sent= sentencia
                    {
                    pushFollow(FOLLOW_sentencia_in_condicionif827);
                    sent=sentencia();

                    state._fsp--;


                    s += sent;

                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:79:34: b= bloqueLlaves
                    {
                    pushFollow(FOLLOW_bloqueLlaves_in_condicionif836);
                    b=bloqueLlaves();

                    state._fsp--;


                    s += b;

                    }
                    break;

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return s;
    }
    // $ANTLR end "condicionif"



    // $ANTLR start "cond"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:80:5: cond returns [String s = \"\"] : ( OP_NOT )? cond_expr (ol= op_log ( OP_NOT )? ce= cond_expr )* ;
    public final String cond() throws RecognitionException {
        String s =  "";


        String ol =null;

        String ce =null;


        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:80:34: ( ( OP_NOT )? cond_expr (ol= op_log ( OP_NOT )? ce= cond_expr )* )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:80:36: ( OP_NOT )? cond_expr (ol= op_log ( OP_NOT )? ce= cond_expr )*
            {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:80:36: ( OP_NOT )?
            int alt14=2;
            int LA14_0 = input.LA(1);

            if ( (LA14_0==OP_NOT) ) {
                alt14=1;
            }
            switch (alt14) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:80:37: OP_NOT
                    {
                    match(input,OP_NOT,FOLLOW_OP_NOT_in_cond856); 

                    }
                    break;

            }


            pushFollow(FOLLOW_cond_expr_in_cond860);
            cond_expr();

            state._fsp--;


            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:80:56: (ol= op_log ( OP_NOT )? ce= cond_expr )*
            loop16:
            do {
                int alt16=2;
                int LA16_0 = input.LA(1);

                if ( (LA16_0==OP_AND||LA16_0==OP_OR) ) {
                    alt16=1;
                }


                switch (alt16) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:80:58: ol= op_log ( OP_NOT )? ce= cond_expr
            	    {
            	    pushFollow(FOLLOW_op_log_in_cond868);
            	    ol=op_log();

            	    state._fsp--;


            	    s+= ol +' ';

            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:80:85: ( OP_NOT )?
            	    int alt15=2;
            	    int LA15_0 = input.LA(1);

            	    if ( (LA15_0==OP_NOT) ) {
            	        alt15=1;
            	    }
            	    switch (alt15) {
            	        case 1 :
            	            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:80:86: OP_NOT
            	            {
            	            match(input,OP_NOT,FOLLOW_OP_NOT_in_cond873); 

            	            }
            	            break;

            	    }


            	    pushFollow(FOLLOW_cond_expr_in_cond882);
            	    ce=cond_expr();

            	    state._fsp--;


            	    s+= ce + ' ';

            	    }
            	    break;

            	default :
            	    break loop16;
                }
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return s;
    }
    // $ANTLR end "cond"



    // $ANTLR start "cond_expr"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:81:5: cond_expr returns [String s = \"\"] : ex= expr ( OP_COMP expr )* ;
    public final String cond_expr() throws RecognitionException {
        String s =  "";


        String ex =null;


        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:81:39: (ex= expr ( OP_COMP expr )* )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:81:41: ex= expr ( OP_COMP expr )*
            {
            pushFollow(FOLLOW_expr_in_cond_expr905);
            ex=expr();

            state._fsp--;


            s += ex + ' ';

            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:81:68: ( OP_COMP expr )*
            loop17:
            do {
                int alt17=2;
                int LA17_0 = input.LA(1);

                if ( (LA17_0==OP_COMP) ) {
                    alt17=1;
                }


                switch (alt17) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:81:69: OP_COMP expr
            	    {
            	    match(input,OP_COMP,FOLLOW_OP_COMP_in_cond_expr910); 

            	    pushFollow(FOLLOW_expr_in_cond_expr912);
            	    expr();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop17;
                }
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return s;
    }
    // $ANTLR end "cond_expr"



    // $ANTLR start "expr"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:83:2: expr returns [String s = \"\"] : em1= exp_mult ( ( MAS em2= exp_mult ) | ( MENOS em3= exp_mult ) )* ;
    public final String expr() throws RecognitionException {
        String s =  "";


        String em1 =null;

        String em2 =null;

        String em3 =null;


        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:83:30: (em1= exp_mult ( ( MAS em2= exp_mult ) | ( MENOS em3= exp_mult ) )* )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:83:32: em1= exp_mult ( ( MAS em2= exp_mult ) | ( MENOS em3= exp_mult ) )*
            {
            pushFollow(FOLLOW_exp_mult_in_expr930);
            em1=exp_mult();

            state._fsp--;


            s+=em1;

            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:83:57: ( ( MAS em2= exp_mult ) | ( MENOS em3= exp_mult ) )*
            loop18:
            do {
                int alt18=3;
                int LA18_0 = input.LA(1);

                if ( (LA18_0==MAS) ) {
                    alt18=1;
                }
                else if ( (LA18_0==MENOS) ) {
                    alt18=2;
                }


                switch (alt18) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:83:58: ( MAS em2= exp_mult )
            	    {
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:83:58: ( MAS em2= exp_mult )
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:83:59: MAS em2= exp_mult
            	    {
            	    match(input,MAS,FOLLOW_MAS_in_expr936); 

            	    s+= " + ";

            	    pushFollow(FOLLOW_exp_mult_in_expr942);
            	    em2=exp_mult();

            	    state._fsp--;


            	    s+=em2;

            	    }


            	    }
            	    break;
            	case 2 :
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:83:103: ( MENOS em3= exp_mult )
            	    {
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:83:103: ( MENOS em3= exp_mult )
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:83:104: MENOS em3= exp_mult
            	    {
            	    match(input,MENOS,FOLLOW_MENOS_in_expr951); 

            	    s+= " - ";

            	    pushFollow(FOLLOW_exp_mult_in_expr957);
            	    em3=exp_mult();

            	    state._fsp--;


            	    s+=em3+" ";

            	    }


            	    }
            	    break;

            	default :
            	    break loop18;
                }
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return s;
    }
    // $ANTLR end "expr"



    // $ANTLR start "exp_mult"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:84:2: exp_mult returns [String s = \"\"] : ex1= exp_base ( ( ASTERISCO ex2= exp_base ) | ( SLASH ex3= exp_base ) )* ;
    public final String exp_mult() throws RecognitionException {
        String s =  "";


        String ex1 =null;

        String ex2 =null;

        String ex3 =null;


        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:84:36: (ex1= exp_base ( ( ASTERISCO ex2= exp_base ) | ( SLASH ex3= exp_base ) )* )
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:84:38: ex1= exp_base ( ( ASTERISCO ex2= exp_base ) | ( SLASH ex3= exp_base ) )*
            {
            pushFollow(FOLLOW_exp_base_in_exp_mult980);
            ex1=exp_base();

            state._fsp--;


            s+=ex1;

            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:84:61: ( ( ASTERISCO ex2= exp_base ) | ( SLASH ex3= exp_base ) )*
            loop19:
            do {
                int alt19=3;
                int LA19_0 = input.LA(1);

                if ( (LA19_0==ASTERISCO) ) {
                    alt19=1;
                }
                else if ( (LA19_0==SLASH) ) {
                    alt19=2;
                }


                switch (alt19) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:84:62: ( ASTERISCO ex2= exp_base )
            	    {
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:84:62: ( ASTERISCO ex2= exp_base )
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:84:63: ASTERISCO ex2= exp_base
            	    {
            	    match(input,ASTERISCO,FOLLOW_ASTERISCO_in_exp_mult986); 

            	    s+= " * ";

            	    pushFollow(FOLLOW_exp_base_in_exp_mult992);
            	    ex2=exp_base();

            	    state._fsp--;


            	    s+=ex2;

            	    }


            	    }
            	    break;
            	case 2 :
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:84:112: ( SLASH ex3= exp_base )
            	    {
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:84:112: ( SLASH ex3= exp_base )
            	    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:84:113: SLASH ex3= exp_base
            	    {
            	    match(input,SLASH,FOLLOW_SLASH_in_exp_mult1000); 

            	    s+= "/";

            	    pushFollow(FOLLOW_exp_base_in_exp_mult1006);
            	    ex3=exp_base();

            	    state._fsp--;


            	    s+=ex3;

            	    }


            	    }
            	    break;

            	default :
            	    break loop19;
                }
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return s;
    }
    // $ANTLR end "exp_mult"



    // $ANTLR start "exp_base"
    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:85:2: exp_base returns [String s = \"\"] : (n= NUMERO | ABRIRPARENTESIS e= expr CERRARPARENTESIS |id= ID );
    public final String exp_base() throws RecognitionException {
        String s =  "";


        Token n=null;
        Token id=null;
        String e =null;


        try {
            // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:85:35: (n= NUMERO | ABRIRPARENTESIS e= expr CERRARPARENTESIS |id= ID )
            int alt20=3;
            switch ( input.LA(1) ) {
            case NUMERO:
                {
                alt20=1;
                }
                break;
            case ABRIRPARENTESIS:
                {
                alt20=2;
                }
                break;
            case ID:
                {
                alt20=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 20, 0, input);

                throw nvae;

            }

            switch (alt20) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:85:38: n= NUMERO
                    {
                    n=(Token)match(input,NUMERO,FOLLOW_NUMERO_in_exp_base1029); 

                     s += Integer.parseInt(n.getText());

                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:86:16: ABRIRPARENTESIS e= expr CERRARPARENTESIS
                    {
                    match(input,ABRIRPARENTESIS,FOLLOW_ABRIRPARENTESIS_in_exp_base1049); 

                    s+= "(";

                    pushFollow(FOLLOW_expr_in_exp_base1055);
                    e=expr();

                    state._fsp--;


                    s+= e;

                    match(input,CERRARPARENTESIS,FOLLOW_CERRARPARENTESIS_in_exp_base1060); 

                    s+= ")";

                    }
                    break;
                case 3 :
                    // C:\\Users\\Jose\\workspace\\practica8\\src\\main\\java\\PL\\practica8\\cFormatParser.g:86:90: id= ID
                    {
                    id=(Token)match(input,ID,FOLLOW_ID_in_exp_base1069); 

                    s += id.getText();

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return s;
    }
    // $ANTLR end "exp_base"

    // Delegated rules


 

    public static final BitSet FOLLOW_VOID_in_tipo57 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CHAR_in_tipo96 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_FLOAT_in_tipo136 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_INT_in_tipo175 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CADENA_in_parametro193 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CARACTER_in_parametro213 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NUMERO_in_parametro233 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_tipo_in_def_parametros260 = new BitSet(new long[]{0x0000000800003000L});
    public static final BitSet FOLLOW_parametro_in_def_parametros269 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_COMA_in_def_parametros274 = new BitSet(new long[]{0x0000200022020000L});
    public static final BitSet FOLLOW_tipo_in_def_parametros281 = new BitSet(new long[]{0x0000000800003000L});
    public static final BitSet FOLLOW_parametro_in_def_parametros288 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_tipo_in_cabecerafuncion320 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_ID_in_cabecerafuncion326 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ABRIRPARENTESIS_in_cabecerafuncion330 = new BitSet(new long[]{0x0000200022030000L});
    public static final BitSet FOLLOW_def_parametros_in_cabecerafuncion339 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_VOID_in_cabecerafuncion349 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_CERRARPARENTESIS_in_cabecerafuncion354 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_OP_OR_in_op_log380 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_OP_AND_in_op_log393 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sentencia_in_entrada409 = new BitSet(new long[]{0x000021003A020002L});
    public static final BitSet FOLLOW_metodo_in_entrada419 = new BitSet(new long[]{0x000021003A020002L});
    public static final BitSet FOLLOW_ID_in_asignacion445 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_ASIGNACION_in_asignacion449 = new BitSet(new long[]{0x0000000808000040L});
    public static final BitSet FOLLOW_expr_in_asignacion455 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_tipo_in_declaracion506 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_ID_in_declaracion513 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_COMA_in_declaracion519 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_ID_in_declaracion526 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_PRINTF_in_printf544 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ABRIRPARENTESIS_in_printf547 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_CADENA_in_printf555 = new BitSet(new long[]{0x0000000000050000L});
    public static final BitSet FOLLOW_COMA_in_printf560 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_ID_in_printf566 = new BitSet(new long[]{0x0000000000050000L});
    public static final BitSet FOLLOW_CERRARPARENTESIS_in_printf572 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_cabecerafuncion_in_metodo590 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_bloqueLlaves_in_metodo597 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_asignacion_in_sentencia629 = new BitSet(new long[]{0x0000040000000000L});
    public static final BitSet FOLLOW_printf_in_sentencia639 = new BitSet(new long[]{0x0000040000000000L});
    public static final BitSet FOLLOW_declaracion_in_sentencia646 = new BitSet(new long[]{0x0000040000000000L});
    public static final BitSet FOLLOW_SEPARADOR_in_sentencia651 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_condicionif_in_sentencia675 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ABRIRLLAVE_in_bloqueLlaves689 = new BitSet(new long[]{0x000021003A028000L});
    public static final BitSet FOLLOW_sentencia_in_bloqueLlaves738 = new BitSet(new long[]{0x000021003A028000L});
    public static final BitSet FOLLOW_CERRARLLAVE_in_bloqueLlaves783 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IF_in_condicionif799 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ABRIRPARENTESIS_in_condicionif804 = new BitSet(new long[]{0x0000004808000040L});
    public static final BitSet FOLLOW_cond_in_condicionif813 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_CERRARPARENTESIS_in_condicionif817 = new BitSet(new long[]{0x000021003A020020L});
    public static final BitSet FOLLOW_sentencia_in_condicionif827 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_bloqueLlaves_in_condicionif836 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_OP_NOT_in_cond856 = new BitSet(new long[]{0x0000000808000040L});
    public static final BitSet FOLLOW_cond_expr_in_cond860 = new BitSet(new long[]{0x0000009000000002L});
    public static final BitSet FOLLOW_op_log_in_cond868 = new BitSet(new long[]{0x0000004808000040L});
    public static final BitSet FOLLOW_OP_NOT_in_cond873 = new BitSet(new long[]{0x0000000808000040L});
    public static final BitSet FOLLOW_cond_expr_in_cond882 = new BitSet(new long[]{0x0000009000000002L});
    public static final BitSet FOLLOW_expr_in_cond_expr905 = new BitSet(new long[]{0x0000002000000002L});
    public static final BitSet FOLLOW_OP_COMP_in_cond_expr910 = new BitSet(new long[]{0x0000000808000040L});
    public static final BitSet FOLLOW_expr_in_cond_expr912 = new BitSet(new long[]{0x0000002000000002L});
    public static final BitSet FOLLOW_exp_mult_in_expr930 = new BitSet(new long[]{0x0000000300000002L});
    public static final BitSet FOLLOW_MAS_in_expr936 = new BitSet(new long[]{0x0000000808000040L});
    public static final BitSet FOLLOW_exp_mult_in_expr942 = new BitSet(new long[]{0x0000000300000002L});
    public static final BitSet FOLLOW_MENOS_in_expr951 = new BitSet(new long[]{0x0000000808000040L});
    public static final BitSet FOLLOW_exp_mult_in_expr957 = new BitSet(new long[]{0x0000000300000002L});
    public static final BitSet FOLLOW_exp_base_in_exp_mult980 = new BitSet(new long[]{0x0000080000000102L});
    public static final BitSet FOLLOW_ASTERISCO_in_exp_mult986 = new BitSet(new long[]{0x0000000808000040L});
    public static final BitSet FOLLOW_exp_base_in_exp_mult992 = new BitSet(new long[]{0x0000080000000102L});
    public static final BitSet FOLLOW_SLASH_in_exp_mult1000 = new BitSet(new long[]{0x0000000808000040L});
    public static final BitSet FOLLOW_exp_base_in_exp_mult1006 = new BitSet(new long[]{0x0000080000000102L});
    public static final BitSet FOLLOW_NUMERO_in_exp_base1029 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ABRIRPARENTESIS_in_exp_base1049 = new BitSet(new long[]{0x0000000808000040L});
    public static final BitSet FOLLOW_expr_in_exp_base1055 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_CERRARPARENTESIS_in_exp_base1060 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ID_in_exp_base1069 = new BitSet(new long[]{0x0000000000000002L});

}